package com.cctc.rds.scheduler.core.task;

/**
 * 任务。
 *
 * @param <T> 任务参数，任务依赖于任务参数实例，执行具体的任务逻辑。
 */
public interface Task<T> {
    /**
     * 任务名称
     */
    String getTaskName();

    /**
     * 任务参数类型
     */
    Class<T> getTaskParamType();

    /**
     * 任务参数实例
     */
    T getTaskParam();

    /**
     * 执行具体的任务逻辑。
     *
     * @param curPeriod 当前执行周期
     * @param taskParam 任务参数实例
     * @return 执行结果
     */
    boolean run(long curPeriod, T taskParam);
}
